﻿#if NET40 || NET461

using Apewer.Internals.QrCode;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;

namespace Apewer.Internals.QrCode
{

    internal sealed class QRCodeUtility
    {

        public static Bitmap Generate(string argText, int argBlock, QRCodeGenerator.ECCLevel argEccLevel)
        {
            var text = argText ?? "";
            var block = argBlock > 1 ? argBlock : 1;
            var ecclevel = argEccLevel;

            try
            {
                var generator = new QRCodeGenerator();
                var content = generator.CreateQrCode(text, ecclevel);
                var qrcode = new QRCode(content);
                var bitmap = qrcode.GetGraphic(block);
                return bitmap;
            }
            catch { return null; }
        }

        /// <summary>生成含有 7% 容错区域的二维码图像，默认色块边长为 10 像素，失败时返回 NULL 值。</summary>
        public static Bitmap GenerateL(string argText)
        {
            return Generate(argText, 10, QRCodeGenerator.ECCLevel.L);
        }

        /// <summary>生成含有 7% 容错区域的二维码图像，可指定每个色块的边长，失败时返回 NULL 值。</summary>
        public static Bitmap GenerateL(string argText, int argBlock)
        {
            return Generate(argText, argBlock, QRCodeGenerator.ECCLevel.L);
        }

        /// <summary>生成含有 15% 容错区域的二维码图像，默认色块边长为 10 像素，失败时返回 NULL 值。</summary>
        public static Bitmap GenerateM(string argText)
        {
            return Generate(argText, 10, QRCodeGenerator.ECCLevel.M);
        }

        /// <summary>生成含有 15% 容错区域的二维码图像，可指定每个色块的边长，失败时返回 NULL 值。</summary>
        public static Bitmap GenerateM(string argText, int argBlock)
        {
            return Generate(argText, argBlock, QRCodeGenerator.ECCLevel.M);
        }

        /// <summary>生成含有 25% 容错区域的二维码图像，默认色块边长为 10 像素，失败时返回 NULL 值。</summary>
        public static Bitmap GenerateQ(string argText)
        {
            return Generate(argText, 10, QRCodeGenerator.ECCLevel.Q);
        }

        /// <summary>生成含有 25% 容错区域的二维码图像，可指定每个色块的边长，失败时返回 NULL 值。</summary>
        public static Bitmap GenerateQ(string argText, int argBlock)
        {
            return Generate(argText, argBlock, QRCodeGenerator.ECCLevel.Q);
        }

        /// <summary>生成含有 30% 容错区域的二维码图像，默认色块边长为 10 像素，失败时返回 NULL 值。</summary>
        public static Bitmap GenerateH(string argText)
        {
            return Generate(argText, 10, QRCodeGenerator.ECCLevel.H);
        }

        /// <summary>生成含有 30% 容错区域的二维码图像，可指定每个色块的边长，失败时返回 NULL 值。</summary>
        public static Bitmap GenerateH(string argText, int argBlock)
        {
            return Generate(argText, argBlock, QRCodeGenerator.ECCLevel.H);
        }

    }

}

#endif